@@ -22,9 +22,12 @@ isoweek==1.3.1  | 
            ||
| 22 | 22 | 
                kkconst==1.1.3  | 
            
| 23 | 23 | 
                mock==2.0.0  | 
            
| 24 | 24 | 
                pep8==1.7.0  | 
            
| 25 | 
                +pywe-oauth==1.0.1  | 
            |
| 26 | 
                +pywe-utils==1.0.0  | 
            |
| 25 | 27 | 
                records==0.4.3  | 
            
| 26 | 28 | 
                redis==2.10.5  | 
            
| 27 | 
                -redis-extensions==1.0.22  | 
            |
| 29 | 
                +redis-extensions==1.0.23  | 
            |
| 30 | 
                +requests==2.12.1  | 
            |
| 28 | 31 | 
                rlog==0.2  | 
            
| 29 | 32 | 
                shortuuid==0.4.3  | 
            
| 30 | 33 | 
                uWSGI==2.0.14  | 
            
                @@ -1,20 +1,17 @@  | 
            ||
| 1 | 1 | 
                # -*- coding: utf-8 -*-  | 
            
| 2 | 2 | 
                 | 
            
| 3 | 3 | 
                import time  | 
            
| 4 | 
                -import urllib  | 
            |
| 5 | 4 | 
                 | 
            
| 6 | 
                -import requests  | 
            |
| 7 | 5 | 
                import shortuuid  | 
            
| 8 | 6 | 
                from django.conf import settings  | 
            
| 9 | 7 | 
                from django.shortcuts import redirect  | 
            
| 10 | 8 | 
                from furl import furl  | 
            
| 11 | 9 | 
                from json_response import auto_response  | 
            
| 10 | 
                +from pywe_oauth import get_access_info, get_oauth_code_url, get_userinfo  | 
            |
| 12 | 11 | 
                from wechatpy import WeChatClient  | 
            
| 13 | 12 | 
                 | 
            
| 14 | 13 | 
                 | 
            
| 15 | 
                -r = settings.REDIS_CACHE  | 
            |
| 16 | 
                -WECHAT = settings.WECHAT  | 
            |
| 17 | 
                -JSAPI = WECHAT.get('JSAPI', {})
               | 
            |
| 14 | 
                +JSAPI = settings.WECHAT.get('JSAPI', {})
               | 
            |
| 18 | 15 | 
                 | 
            
| 19 | 16 | 
                 | 
            
| 20 | 17 | 
                def wx_oauth2(request):  | 
            
                @@ -22,15 +19,9 @@ def wx_oauth2(request):  | 
            ||
| 22 | 19 | 
                     redirect_url = request.GET.get('redirect_url', '')
               | 
            
| 23 | 20 | 
                     default_url = request.GET.get('default_url', '')
               | 
            
| 24 | 21 | 
                 | 
            
| 25 | 
                - redirect_uri = settings.WECHAT_USERINFO_REDIRECT_URI if scope == 'snsapi_userinfo' else settings.WECHAT_BASE_REDIRECT_URI  | 
            |
| 26 | 
                -  | 
            |
| 27 | 22 | 
                if request.weixin:  | 
            
| 28 | 
                - return redirect(settings.WECHAT_OAUTH2_AUTHORIZE.format(  | 
            |
| 29 | 
                - appid=JSAPI['appID'],  | 
            |
| 30 | 
                - redirect_uri=urllib.quote_plus(redirect_uri),  | 
            |
| 31 | 
                - scope=scope,  | 
            |
| 32 | 
                - state=urllib.quote_plus(redirect_url)  | 
            |
| 33 | 
                - ))  | 
            |
| 23 | 
                + redirect_uri = settings.WECHAT_USERINFO_REDIRECT_URI if scope == 'snsapi_userinfo' else settings.WECHAT_BASE_REDIRECT_URI  | 
            |
| 24 | 
                + return redirect(get_oauth_code_url(JSAPI['appID'], redirect_uri, scope, redirect_url))  | 
            |
| 34 | 25 | 
                 | 
            
| 35 | 26 | 
                return redirect(default_url or redirect_url)  | 
            
| 36 | 27 | 
                 | 
            
                @@ -39,11 +30,7 @@ def base_redirect(request):  | 
            ||
| 39 | 30 | 
                     code = request.GET.get('code', '')
               | 
            
| 40 | 31 | 
                     state = request.GET.get('state', '')
               | 
            
| 41 | 32 | 
                 | 
            
| 42 | 
                - access_info = requests.get(settings.WECHAT_OAUTH2_ACCESS_TOKEN.format(  | 
            |
| 43 | 
                - appid=JSAPI['appID'],  | 
            |
| 44 | 
                - secret=JSAPI['appsecret'],  | 
            |
| 45 | 
                - code=code  | 
            |
| 46 | 
                - ), verify=False).json()  | 
            |
| 33 | 
                + access_info = get_access_info(JSAPI['appID'], JSAPI['appsecret'], code)  | 
            |
| 47 | 34 | 
                 | 
            
| 48 | 35 | 
                return redirect(furl(state).add(access_info).url)  | 
            
| 49 | 36 | 
                 | 
            
                @@ -52,19 +39,8 @@ def userinfo_redirect(request):  | 
            ||
| 52 | 39 | 
                     code = request.GET.get('code', '')
               | 
            
| 53 | 40 | 
                     state = request.GET.get('state', '')
               | 
            
| 54 | 41 | 
                 | 
            
| 55 | 
                - access_info = requests.get(settings.WECHAT_OAUTH2_ACCESS_TOKEN.format(  | 
            |
| 56 | 
                - appid=JSAPI['appID'],  | 
            |
| 57 | 
                - secret=JSAPI['appsecret'],  | 
            |
| 58 | 
                - code=code  | 
            |
| 59 | 
                - ), verify=False).json()  | 
            |
| 60 | 
                -    openid, access_token = access_info.get('openid', ''), access_info.get('access_token', '')
               | 
            |
| 61 | 
                -  | 
            |
| 62 | 
                - res = requests.get(settings.WECHAT_OAUTH2_USERINFO.format(  | 
            |
| 63 | 
                - access_token=access_token,  | 
            |
| 64 | 
                - openid=openid  | 
            |
| 65 | 
                - ), verify=False)  | 
            |
| 66 | 
                - res.encoding = 'utf-8'  | 
            |
| 67 | 
                - userinfo = res.json()  | 
            |
| 42 | 
                + access_info = get_access_info(JSAPI['appID'], JSAPI['appsecret'], code)  | 
            |
| 43 | 
                +    userinfo = get_userinfo(access_info.get('access_token', ''), access_info.get('openid', ''))
               | 
            |
| 68 | 44 | 
                 | 
            
| 69 | 45 | 
                return redirect(furl(state).add(userinfo).url)  | 
            
| 70 | 46 | 
                 |